
let pro1 = new Promise((resolve, reject) => {
  setTimeout(function () {
    resolve('pro1')
  }, 500)
})
let pro2 = new Promise((resolve, reject) => {
  setTimeout(function () {
    resolve('pro2')
  }, 100)
})
let pro3 = new Promise((resolve, reject) => {
  setTimeout(function () {
    reject('pro3')
  }, 500)
})

Promise.race([pro1, pro2, pro3]).then(results => { // 全部执行成功
  results.forEach(item => {
    console.log(item)
  })
}).catch(reason => { // reason为第一个执行reject的异常结果
  console.log(reason)
})

// 运行结果：
// pro1
// pro2
// pro3